Contiene sia una valutazione preventiva dello sforzo, ottenuta usando FP, sia una tabella riassuntiva degli sforzi a consuntivo di tutti i membri del gruppo.

Data la specifica dei requisiti, era necessario definire o quantomeno stimare la quantit\`a  di sforzo che sarebbe stata necessaria per ultimare il progetto.
Esistono principalmente 3 modi per stimare lo sforzo necessario, che sono:
\begin{enumerate}
 \item valutazione mediante pareri esperti: \`e possibile chiedere il parere di uno o pi\'u esperti, e basarsi sulle stime fatte da lui/loro
 \item valutazione basata sull'esperienza: se il Project Manager (PM) ha gi\'a avuto esperienza con progetti simili, pu\'o tentare una stima basata sulla sua esperienza
 \item valutazione mediante Function Points: un metodo basato su criteri di valutazione matematici ed empirici. Generalmente viene riconosciuto come pi\'u affidabile dalla comunit\'a di settore, ma potrebbe non essere banale convertire i Function Point (FP) in mesi uomo (MM).
\end{enumerate}

Una stima dello sforzo mediante FP era stata esplicitamente richiesta dai committenti, essa sar\'a quindi riportata in questo documento.
Siccome il gruppo non disponeva di un PM esperto gi\'a nel campo, n\`e tantomeno di esperti esterni, quest'analisi \`e stata anche l'unica su cui ci si \`e potuti basare.

\section{Valutazione preventiva dello sforzo}

Per poter procedere al calcolo dei Function Point era necessario fissare le funzionalit\'a ed i dati che sarebbero stati scambiati tra le varie parti dell'applicazione.
Per questo, dopo avere definito in maniera sommaria i casi d'uso, il gruppo ha seguito le regole dell' \cite{IFPUG} e dell' \cite[articolo di Fetcke]{Fetcke}.

Per prima cosa \`e stato quindi stilato il diagramma dell'analisi, riportato in Figura \ref{analisysDiagram}, che permetteva una prima visione macroscopica del dominio applicativo.


\begin{figure}
\centering
\includegraphics{img/analisysDiagram}
\caption{Il diagramma dell'analisi}
\label{analisysDiagram}
\end{figure}
Da questo diagramma si \`e quindi proceduto alla stima vera e propria, e quindi alla conversione in mesi uomo usando il modello \cite{COCOMO 2} e l'applicazione \cite{COCOMO II.2000}.

In questa sezione riportiamo solo i passaggi principali ed i risultati, per ulteriori risultati rimandiamo all'appendice \ref{Calcolo dei Function Point}

\subsection{Individuazione e classificazione degli ILF ed EIF}

Dato il diagramma dell'analisi, si passa all'individuazione degli Internal Logical File (ILF) ed External Interface File (EIF).

Basandoci sui criteri dell' \cite{IFPUG}, abbiamo individuato gli ILF/EIF. Nel diagramma dell'analisi essi appaiono con una forma rettangolare.
Utilizzando poi le tabelle apposite si \`e potuto calcolare i FP associati a queste strutture. Nella tabella riassumiamo i risultati. Per ulteriori dettagli fare riferimento all'appendice \ref{Calcolo dei Function Point}.

\begin{center}
% use packages: array
\begin{tabular}[l]{cccc}
Nome & Tipo & Complessit\`a  & FP \\
Magazzino & EIF & Basso & 5 \\
Banca & EIF & Basso & 5 \\
Carrello & ILF & Basso & 7 \\
Libro & ILF & Basso & 7 \\
Ordine & ILF & Basso & 7 \\
Profilo Utente & ILF & Basso & 7 \\
 & & & 38
\end{tabular}
\end{center}

\subsection{Individuazione e classificazione degli EI,EO,EQ}

Dato il diagramma dell'analisi, si passa all'individuazione degli External Input (EI), External Output (EO) ed External Inquiry (EQ). Nel diagramma dell'analisi riportato essi sono gi\'a stati identificati ed appaiono con una forma ovaleggiante.
Utilizzando poi le tabelle apposite si \`e potuto calcolare i FP associati a queste entit\'a. Nella tabella riassumiamo i risultati. Per ulteriori dettagli fare riferimento all'appendice \ref{Calcolo dei Function Point}.

\begin{center}
% use packages: array
\begin{tabular}[l]{cccc}
Nome & Tipo & Complessit\`a  & FP \\
Registrazione & EI & Basso & 3 \\
Modifica dati profilo & EI & Basso & 3 \\
Login (lato Cliente) & EO & Basso & 4 \\
Login (lato Amministratore) & EO & Basso & 4 \\
Blocca profilo & EI & Basso & 3 \\
Cancella Libro & EI & Basso & 3 \\
Crea Libro & EI & Basso & 3 \\
Modifica dati libro & EI & Basso & 3 \\
Ricerca libri (lato Admin) & EQ & Basso & 3 \\
Visualizza catalogo & EQ & Basso & 3 \\
Aggiungi un libro al carrello & EI & Basso & 3 \\
Checkout carrello e inserisci dati pagamento & EO & Alto & 7 \\
Conferma avvenuto pagamento & EO & Basso & 4 \\
 & & & 46
\end{tabular}
\end{center}

\subsection{Parametri per COCOMO 2}

Ci \`e voluto un po' di tempo per valutare tutti i coefficienti dell'Early Design Model.\\ 
Questa tabella riassume il lavoro fatto. I calcoli precisi sono riportati nell'Appendice \ref{Parametri di COCOMO 2}


\begin{center}
% use packages: array
\begin{tabular}{ll}
RCPX & A met\`a  tra Very Low e Low \\ 
RUSE & Low \\ 
PDIF & Nominal \\
PERS & High \\
PREX & Low \\
FCIL & Nominal \\
\end{tabular}
\end{center}

Il valore del parametro SCED \`e stato tenuto su \textbf{Nominal}.

\subsection{Preventivo dello sforzo}

Per calcolare l'affettivo numero di mesi uomo necessari al completamento del progetto abbiamo usato il programma COCOMO II.2000. In questo modo eravamo sicuri che il calcolo sarebbe stato fatto secondo lo standard COCOMO II.\\
Abbiamo dapprima inserito il modello che ci interessava: Early Design Model.\\
\includegraphics[scale=0.75]{img/cocomoApp1}
\newline
Poi abbiamo inserito la stima in FP che avevamo trovato, specificando la complessit\`a  dei vari componenti.\\
Abbiamo inserito il linguaggio di riferimento: Java\\
\includegraphics{img/cocomoApp2}
\newline
Infine abbiamo inserito i parametri relativi a COCOMO II di cui abbiamo parlato nella sottosezione precedente\\
\includegraphics[scale=0.75]{img/cocomoApp3}
\newline
Da questi dati l'applicazione ha derivato che sarebbero stati necessari 6,2 mesi uomo per il completamento del progetto nel caso ottimo e 13,9 mesi uomo nel caso pessimo.\\
\includegraphics[scale=0.75]{img/cocomoApp4}
\newline
Questa prima stima per\`o portava la data di scadenza del progetto troppo avanti anche nel caso medio, per cui sono stati individuate delle funzionalit\`a che erano sentite come opzionali, e che potevano essere scartate dalla release vera e propria.\\
Queste funzionalit\`a erano:
\begin{enumerate}
 \item Blocca Profilo Cliente
 \item Modifica Dati Libro
 \item Cancella libro
 \item Ricerca (lato Amministratore)
\end{enumerate}
Queste funzionalit\`a, messe assieme, richiederebbero uno sforzo di circa 1,3 MM, che divise per 4 fanno circa 10 giorni, il che ci avrebbe permesso di stare virtualmente dentro i tempi.\\
Nelle stime e nei diagrammi di Gannt abbiamo per\`o sempre contato come se queste funzionalit\`a fossero comunque da sviluppare, il che ci permette di fare raffronti con i tempi che abbiamo realmente ottenuto.\\
\includegraphics[scale=0.75]{img/opzionali.eps}

\section{Riassunto consuntivo dello sforzo del gruppo}

Alla fine si \`e dovuto optare per escludere le funzionalit\`a opzionali (di cui abbiamo parlato nella precedente sezione) dalla release per stare dentro alle scadenze.\\
Questo significa che dovremmo aver ottenuto uno sforzo di circa 8 MM totali finali, quindi circa 2 MM a testa.\\
Consultando i calendari di gruppo e di ogni singolo membro, ovvero i capitoli \ref{calendario di gruppo} e \ref{calendari personali} di questo documento, emergono i seguenti risultati:
\begin{itemize}
 \item \textbf{Sforzo totale di ogni singolo individuo:}
  \subitem Davide (PM): 284 h
  \subitem Giulio (QE): 270 h
  \subitem Lara (L): 286 h
  \subitem Marco (TS): 281 h
 \item \textbf{Sforzo totale dell'intero team:} 1121 h
\end{itemize}

Alla fine sono state prodotte 4417 SLOC. Da notare che i file JSP erano pi\'u difficili da fattorizzare e scrivere, e quindi hanno portato ad un numero di righe di codice lievemente maggiore al totale stimato\\
Tuttavia i conti tornano rispetto alle stime iniziali.\\
Il totale risulta lievemente inferiore alle stime iniziali, e questo \`e dovuto all'efficienza (lievemente superiore al previsto) del team, e alla possibilit\`a di consultarsi con i compagni di corso, che pi\`u di una volta hanno saputo dare indicazioni che ci hanno risparmiato ore preziose.